#include <stdio.h>
#define NOINLINE __attribute__((noinline))
#define EXEC(X, N) do { \
  for(int i = 0; i < N;++i){ \
    printf("exec %s\n", #X); \
    X; \
  } \
}while(0)

NOINLINE void func1(){
  printf("exec once\n");
}


NOINLINE void func2(){
  EXEC(func1(), 2);
}

NOINLINE void func3(){
  EXEC(func2(), 5);
}

NOINLINE void func4(){
  EXEC(func3(), 5);
}

NOINLINE void func5(){
  EXEC(func4(), 5);
}

NOINLINE void func6(){
  EXEC(func5(), 1);
}

int main(){
  func6();
}
